//
//  RedView.m
//  事件传递
//
//  Created by 周成龙 on 16/8/28.
//  Copyright © 2016年 ZCL. All rights reserved.
//  红色view覆盖在按钮的上面



#import "RedView.h"

@interface RedView ()

@property (nonatomic, weak) IBOutlet UIButton *btn;

@end

@implementation RedView

// 寻找最合适的 View
// 只要有一个事件传递给控件，就会调用这个控件的 hitTest 方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    CGPoint btnP = [self convertPoint:point toView:self.btn];
    
    /**
     判断点击是否在按钮上
      - 是：返回 按钮的点击时间
      - 否：返回 红色View(self)
     */
    // pointInside: 判断点是否在方法调用者上
    NSLog(@"-%@", NSStringFromClass([[super hitTest:point withEvent:event] class]));
    if ([self.btn pointInside:btnP withEvent:event]) {
        return self.btn;
    }else {
        return [super hitTest:point withEvent:event];
    }
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s", __func__);
}

@end
